C语言中sizeof与strlen区别 |
您所在的位置:网站首页 › sizeof 字符数组 › C语言中sizeof与strlen区别 |
C 语⾔中 sizeof 与 strlen 区别 sizeof 初始的分配的空间⼤⼩,期中 sizeof(unsigned char) = 1; sizeof(signed char) = 1;
sizeof(int) = 4; sizeof(unsigned int) = 4; sizeof(short int) = 2; sizeof(unsigned short) = 2; sizeof(long int) = 4; sizeof(unsigned long) = 4; sizeof(float) = 4; sizeof(double) = 8; sizeof(long double) = 12; sizeof(char *)=4; 例如 : char a[5]; int b[5]; sizeof(a) = 5; sizeof(b) = 20; strlen 是该数组的长度:如 ( 1 ) char * 指针
strlen (指针名)
如果参数是指针则计算该指针指向字符序列的长度。(以 ’\0’ 作为判断标志)例如:
定义 char *p=“hello world” ; strlen ( p ) =11 ,⽽ sizeof ( p ) =4 。可以看到 strlen 计算的是指针指向的字符串的长度⽽ sizeof 计算的是指针本⾝所占⽤的内存空 间的⼤⼩。
( 2 )数组
strlen (数组名)
如果参数是数组的话,实际传递的是⼀个指针, strlen 会按照上⾯处理指针的模 式处理该数组。
我们可以看下⾯的例⼦:
char a[]=”hh”; strlen(a);
很显然 strlen 的结果是 2 。但是如果数组是这样赋值的呢?
char a[]={‘h’ , ’h’}; strlen(a);
那么现在 strlen ( a )的结果⼜是多少呢?这个数就不⼀定了,原因是 strlen 会去 计算 a 地址开始的字符串的长度,由于前⼀种赋值⽅式会将 hh 以字
符串的形式 赋值给数组会将字符串结束符 ’\0’ ⼀同赋值,这时 strlen 就会检查到结束符停⽌ 计算,⽽第⼆种复值⽅式是以单个字符的形式赋值没有结束
符 ’\0’, 这时我们⽤ sizeof 得到的结果是正常的,⽽⽤ strlen 由于找不到结束符,会继续的计算直到 找到结束符为⽌。所以这个数是不确定 .
实例 2: char a[]="hello"; char b[]={'h','e','l','l','o'}; strlen(a),strlen(b) 的值分别是多少 ?
|
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |